Desarrollo de software profesional

El software profesional se hace para ser usado por alguien que no es el desarrollador y normalmente se hace en equipos. Es mantenido y cambiado durante su vida. A este tipo de software se orienta la ingeniería de software, pues las técnicas que usa son irrelevantes para el software personal. El software incluye no sólo un programa, sino también documentación, librerías y otras cosas.

La computación, a diferencia de la ingeniería de software, se enfoca en la parte teórica, y ésta última es parte de la ingeniería de sistemas.
El 40% del costo del software es testing.

Productos genéricos y personalizados

En los productos genéricos, la especificación la controla la compañía, mientras que en los personalizados la controla el cliente, y se debe trabajar con ella.
En la actualidad, cada vez se mezclan más estas especificaciones, partiendo de un software genérico y adaptándolo.

Atributos esenciales de un buen sw

La calidad de software incluye el comportamiento, estructura y organización de los componentes.

  • Mantenibilidad
    Debe poder evolucionar para satisfacer las necesidades cambiantes de los clientes.
  • Confiabilidad y seguridad
    No debe causar daños físicos o económicos en caso de falla del sistema. Los usuarios maliciosos no deberían poder acceder o dañar el sistema.
  • Eficiencia
    No debe hacer un derroche de recursos del sistema, como la memoria y los ciclos del procesador, incluye la capacidad de respuesta, el tiempo de procesamiento, etc.
  • Aceptabilidad
    Debe ser aceptable para el tipo de usuarios para los que está diseñado. (comprensible, utilizable y compatible con otros sistemas que utilizan)

Pasted image 20230420212129.png

Ingeniería de software

Es una disciplina de la ingeniería que se ocupa de todos los aspectos de la producción de software desde las primeras etapas de la especificación del sistema hasta el mantenimiento del sistema una vez que se ha puesto en uso.

Es una disciplina de ingeniería. Los ingenieros trabajan con restricciones, y no siempre existe un método que puedan aplicar para resolver un problema. Tienen que dar un resultado de la calidad requerida en tiempo y bajo el presupuesto, así que no pueden hacer todo perfectamente.

No es lo mismo la ing. de sistemas: la ingeniería de sistemas involucra varias cosas como hardware y proceso de diseño, además del software.

Problemas en ing. de sw

  • Heterogeneidad
    Cada vez con mayor frecuencia se requieren sistemas que operen como distribuidos a través de redes que incluyan diferentes tipos de computadoras y dispositivos móviles.
    Se tendrá que integrar con frecuencia el nuevo software con sistemas legados más viejos, escritos en diferentes lenguajes.
  • Negocios y cambio social
    Los negocios y la sociedad están cambiando increíblemente rápido, se debe producir sw a una velocidad similar.
  • Seguridad y confianza
    Es esencial que podamos confiar en ese software pues está en todos los aspectos de nuestras vidas (por ej, seguridad de la información).
  • Escala
    Amplia gama de escalas, desde sistemas embebidos en dispositivos portátiles hasta sistemas en la nube que sirven a una comunidad global.

Diversidad en ing. de sw

La ing. de sw. es un enfoque sistemático para la producción de software que tiene en cuenta los costos prácticos, el cronograma y los problemas de confiabilidad, así como las necesidades de los clientes y productos de software.

Uno de los factores más importantes es el tipo de aplicación. Aunque los limites de los tipos son borrosos, ayuda a determinar las técnicas y métodos a utilizar.

Principios fundamentales:

  • un proceso de desarrollo controlado y entendido
  • confiabilidad y el rendimiento,
  • comprender y gestionar la especificación y requisitos del software,
  • reutilizar el software que ya se ha desarrollado.

Tipos de aplicaciones

  • Aplicaciones independientes
    Incluyen toda la funcionalidad necesaria y no necesitan una red.
  • Aplicaciones interactivas basadas en transacciones
    Se ejecutan en una computadora remota (ej. aplicaciones web).
  • Sistemas de control integrados
    Administran dispositivos de hardware.
  • Sistemas de procesamiento por lotes
    Diseñados para procesar datos en grandes lotes.
  • Sistemas de entretenimiento
    Destinados a entretener al usuario.
  • Sistemas para modelado y simulación
    Desarrollados para modelar procesos o situaciones físicas.
  • Sistemas de recolección de datos
    Recopilan datos de su entorno utilizando sensores para su procesamiento.
  • Sistemas de sistemas
    Están compuestos de otros sistemas de sw.

Ética

La ingeniería de software implica responsabilidades más amplias que simplemente la aplicación de habilidades técnicas.
Los ingenieros de software deben comportarse de una manera honesta y éticamente responsable si deben ser respetados como profesionales.
El comportamiento ético es más que simplemente mantener la ley, implica seguir un conjunto de principios que son moralmente correctos.

El Instituto de Ingenieros Eléctricos y Electrónicos (IEEE) con la ACM produjo un código de ética y práctica profesional.

Cuestiones de responsabilidad profesional

  • Confidencialidad
    Respetar la confidencialidad de sus empleadores (con o sin acuerdo).
  • Competencia
    No aceptar trabajos que están fuera de su competencia.
  • Derechos de propiedad intelectual
    Conocer las leyes sobre el uso de la propiedad intelectual y licencias.
  • Mal uso de la computadora
    No usar sus habilidades técnicas para usar mal las computadoras de otras personas.